home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / util / dtype / MacSND_dtc_107.lha / Source / Data.h < prev    next >
C/C++ Source or Header  |  1994-09-03  |  4KB  |  142 lines

  1. /*
  2. **    MacSND DataType
  3. **
  4. **    Written by Olaf `Olsen' Barthel <olsen@sourcery.han.de>
  5. **        Public domain
  6. **
  7. ** :ts=4
  8. */
  9.  
  10.     // Our custom library structure
  11.  
  12. struct ClassBase
  13. {
  14.     struct Library             LibNode;            // Exec link
  15.  
  16.     struct ExecBase            *SysBase;            // Exec library
  17.     struct DosLibrary        *DOSBase;            // Dos library
  18.     struct Library            *IntuitionBase,        // Intuition library
  19.                             *UtilityBase,        // Utility library
  20.                             *IFFParseBase,        // IFFParse library
  21.                             *DataTypesBase,        // DataTypes library
  22.                             *SuperClassBase;    // Sound datatype
  23.     struct SignalSemaphore     LockSemaphore;        // Shared access semaphore
  24.     Class                    *SoundClass;        // The class this library implemnts
  25.     BPTR                     Segment;            // Library segment pointer
  26. };
  27.  
  28.     // Redirect references to global data into the library base
  29.  
  30. #define SysBase            ClassBase -> SysBase
  31. #define DOSBase            ClassBase -> DOSBase
  32. #define IntuitionBase    ClassBase -> IntuitionBase
  33. #define UtilityBase        ClassBase -> UtilityBase
  34. #define IFFParseBase    ClassBase -> IFFParseBase
  35. #define DataTypesBase    ClassBase -> DataTypesBase
  36. #define SuperClassBase    ClassBase -> SuperClassBase
  37. #define LockSemaphore    ClassBase -> LockSemaphore
  38. #define SoundClass        ClassBase -> SoundClass
  39. #define Segment            ClassBase -> Segment
  40.  
  41.     // Resource fork header
  42.  
  43. struct ResourceHeader
  44. {
  45.     LONG    ResourceDataOffset,            // Offset to data
  46.             ResourceMapOffset,            // Offset to map
  47.  
  48.             ResourceDataSize,            // Size of resource data
  49.             ResourceMapSize;            // Size of resource map
  50.  
  51.     BYTE    SystemReserved[112],        // Reserved for system use
  52.             ApplicationReserved[128];    // Reserved for application use
  53. };
  54.  
  55.     // Resource map header
  56.  
  57. struct ResourceMapHeader
  58. {
  59.     LONG    ResourceDataOffset,            // Offset to data
  60.             ResourceMapOffset,            // Offset to map
  61.  
  62.             ResourceDataSize,            // Size of resource data
  63.             ResourceMapSize;            // Size of resource map
  64.  
  65.     BYTE    Reserved[6];
  66.  
  67.     WORD    ResourceAttributes,            // Offset to resource attribute list
  68.             ResourceTypeListOffset,        // Offset to resource type list
  69.             ResourceNameListOffset;        // Offset to resource name list
  70. };
  71.  
  72.     // Resource type list entry
  73.  
  74. struct ResourceTypeEntry
  75. {
  76.     TEXT    ResourceType[4];            // Resource type
  77.     WORD    ResourceCount,                // Number of resources in this list
  78.             ResourceReferenceOffset;
  79. };
  80.  
  81.     // Resource type header
  82.  
  83. struct ResourceTypeHeader
  84. {
  85.     WORD    ResourceEntryCount;            // Number of entries in list
  86. };
  87.  
  88.     // Resource reference
  89.  
  90. struct ResourceReference
  91. {
  92.     WORD    ResourceID,                    // Resource ID number
  93.             ResourceNameOffset;            // Offset to resource  name
  94.     LONG    ResourceInfo;                // Top 8 eight bits = attributes,
  95.                                         // lower 24 bits = offset to data
  96.     BYTE    Reserved[4];
  97. };
  98.  
  99.     // bufferCmd data packet, aka SoundDataHeader
  100.  
  101. struct SoundDataHeader
  102. {
  103.     LONG    DataOffset,                    // Offset to data area
  104.             SampleSize;                    // Number of bytes in sample
  105.     WORD    SampleRate,                    // Sample rate (integer part)
  106.             SampleRate1;                // Sample rate (mantissa)
  107.     LONG    LoopStart,                    // Start of loop segment
  108.             LoopEnd;                    // End of loop segment
  109.     UBYTE    Encoding;                    // Sound encoding, 0xFE means compressed
  110.     BYTE    BaseFrequency;                // Recording base frequency
  111. };
  112.  
  113. #define stdSH    0x00
  114.  
  115.     // MacBinary file header
  116.  
  117. typedef struct
  118. {
  119.     BYTE    zero1;
  120.  
  121.     BYTE    nlen;
  122.     TEXT    name[63];        // File name, Pascal format string
  123.  
  124.     TEXT    type[4];        // File type
  125.     TEXT    creator[4];        // Creator signature
  126.  
  127.     UBYTE    flags1,            // Attributes
  128.             flags2;
  129.  
  130.     UBYTE    location[6];    // Icon position
  131.  
  132.     UBYTE    locked1,        // Locked?
  133.             locked2;
  134.  
  135.     UBYTE    dflen[4];        // Data fork length
  136.     UBYTE    rflen[4];        // Resource fork length
  137.     UBYTE    cdate[4];        // Creation date
  138.     UBYTE    mdate[4];        // Modification date
  139.  
  140.     BYTE    pad[29];        // Pad to 128 byte boundary
  141. } MacBinaryHeader;
  142.